Image processing is an essential function of a vast majority of modern day devices, ranging from computing systems to consumer devices such as cell phones and Personal Digital Assistants (PDAs). The human interfaces for these devices are becoming increasingly graphical in nature in order to provide a more user friendly interface. These graphical user interfaces (GUIs) are also increasing in sophistication as greater computing power becomes available in these devices.
Conventional image processing systems typically require relatively large memory structures that store the images. The image processing activity involves the manipulation of this large amount of imaging data at very high speeds so as to enable real-time visualization of the images and the movement of those images. Typical operations include image translation and rotation. This high-speed manipulation of the image data is performed by signal processors, general purpose processors or special purpose image processors. These image processing engines access the image data in the memory through high-speed busses that connect them together.
Conventional memory systems are designed for meeting the needs of normal non-imaging data processing functions. As such, conventional memory systems are designed for normal sequential memory access. When such conventional memory systems are used for image processing, the image data (pixels) are packed to improve the memory utilization, for example, if memory data width is 64-bits then it will contain four 16-bit pixels or two 24-bit pixels and two bytes of the third pixel. The resulting performance is less than optimal as the typical frequently used functions of image translation or rotation very often require non-sequential memory access. Consequently, several memory accesses are required for each step of the image processing function resulting in inefficient and slow operation for a given clock speed.
Conventional systems attempt to improve the performance of a memory system that is used for image rotation by 90 degrees or a multiple of 90 degrees. For example, conventional system move image data from an initial position to a subsequent position involving rotation by 90 degrees or a multiple of 90 degrees with or without image translation. Typically, such systems focus on determining the optimum movement of the data regardless of the speed of accessing data from the memory without addresses the issues relating to the speed and efficiency of accessing the data from the memory, hence its effectiveness is limited by the memory access mechanism.
There is therefore a need for memory architectures for efficient image processing applications that involve image rotation by 90 degrees or a multiple of 90 degrees.